﻿using System;
using System.Collections.Generic;
using MarriageFertility.Dialogs;
using TaleWorlds.Localization;

namespace MarriageFertility.Texts;

public static class PoetryText
{
    public static TextObject PoemStart => new TextObject("{=MF_PoemStart}I wish to express my feelings through a poem...");
    public static TextObject LordAskPoem => new TextObject("{=MF_LordAskPoem}Oh? What poem will you share?");
    public static TextObject NoAnswer => new TextObject("{=MF_NoAnswer}I cannot think of a fitting poem...");
    public static TextObject NoAnswerResponse => new TextObject("{=MF_NoPoemAnswerResponse}Perhaps another time, then.");
    public static TextObject SuccessResponse1 => new TextObject("{=MF_SuccessResponse1}Your verses weave a tapestry of emotion, deeply moving.");
    public static TextObject SuccessResponse2 => new TextObject("{=MF_SuccessResponse2}Such poetry! It speaks to the soul beyond the clash of swords.");
    public static TextObject SuccessResponse3 => new TextObject("{=MF_SuccessResponse3}Your poem is a balm to my weary spirit, truly inspiring.");
    public static TextObject SuccessResponse4 => new TextObject("{=MF_SuccessResponse4}Your words, like starlight, illuminate the depths of my heart.");

    // Reject Responses
    public static TextObject RejectResponse1 => new TextObject("{=MF_RejectResponse1}Though earnest, your poem fails to touch my heart.");
    public static TextObject RejectResponse2 => new TextObject("{=MF_RejectResponse2}Your words lack the spark to ignite my soul.");
    public static TextObject RejectResponse3 => new TextObject("{=MF_RejectResponse3}A valiant effort, but your poetry does not resonate with me.");
    public static TextObject RejectResponse4 => new TextObject("{=MF_RejectResponse4}Your verses are flat, stirring no ripples in my heart.");

    // Reaction Responses
    public static TextObject ReactionCriticalFailure => new TextObject("{=MF_ReactionCriticalFailure}Your words stumble, a jest where poetry was promised.");
    public static TextObject ReactionFailure => new TextObject("{=MF_ReactionFailure}Alas, your poem falls short of stirring my soul.");
    public static TextObject Blocked => new TextObject("{=MF_Blocked}This poem is unavailable.");
    
    public static TextObject PoemOption => new TextObject("{=MF_PoemOption}{PERSUASION_OPTION_LINE} {SUCCESS_CHANCE}");

    // Frequency Positive Task
    public static TextObject FrequencyPositiveSpoken => new TextObject("{=MF_FrequencyPositiveSpoken}Recite a poem of loyalty and steadfast companionship.");
    public static TextObject FrequencyPositiveImmediateFail => new TextObject("{=MF_FrequencyPositiveImmediateFail}Your poem lacks the warmth of loyalty.");
    public static TextObject FrequencyPositiveFail => new TextObject("{=MF_FrequencyPositiveFail}This poem fails to capture steadfast devotion.");
    public static TextObject FrequencyPositiveTryLater => new TextObject("{=MF_FrequencyPositiveTryLater}Return when your words ring truer.");

    // Frequency Negative Task
    public static TextObject FrequencyNegativeSpoken => new TextObject("{=MF_FrequencyNegativeSpoken}Recite a poem of freedom and unbound spirit.");
    public static TextObject FrequencyNegativeImmediateFail => new TextObject("{=MF_FrequencyNegativeImmediateFail}Your poem is bound by convention, lacking freedom.");
    public static TextObject FrequencyNegativeFail => new TextObject("{=MF_FrequencyNegativeFail}This poem fails to express an unbound spirit.");
    public static TextObject FrequencyNegativeTryLater => new TextObject("{=MF_FrequencyNegativeTryLater}Return when your verses soar freely.");

    // Mercy Positive Task
    public static TextObject MercyPositiveSpoken => new TextObject("{=MF_MercyPositiveSpoken}Recite a poem of compassion and mercy.");
    public static TextObject MercyPositiveImmediateFail => new TextObject("{=MF_MercyPositiveImmediateFail}Your poem is cold, devoid of compassion.");
    public static TextObject MercyPositiveFail => new TextObject("{=MF_MercyPositiveFail}This poem fails to touch the heart with mercy.");
    public static TextObject MercyPositiveTryLater => new TextObject("{=MF_MercyPositiveTryLater}Return when your words carry kindness.");

    // Mercy Negative Task
    public static TextObject MercyNegativeSpoken => new TextObject("{=MF_MercyNegativeSpoken}Recite a poem of resilience and unrelenting will.");
    public static TextObject MercyNegativeImmediateFail => new TextObject("{=MF_MercyNegativeImmediateFail}Your poem is weak, lacking resolve.");
    public static TextObject MercyNegativeFail => new TextObject("{=MF_MercyNegativeFail}This poem fails to convey unyielding strength.");
    public static TextObject MercyNegativeTryLater => new TextObject("{=MF_MercyNegativeTryLater}Return when your verses are steadfast.");

    // Valor Positive Task
    public static TextObject ValorPositiveSpoken => new TextObject("{=MF_ValorPositiveSpoken}Recite a poem of courage and glory.");
    public static TextObject ValorPositiveImmediateFail => new TextObject("{=MF_ValorPositiveImmediateFail}Your poem lacks the fire of courage.");
    public static TextObject ValorPositiveFail => new TextObject("{=MF_ValorPositiveFail}This poem fails to capture a hero's spirit.");
    public static TextObject ValorPositiveTryLater => new TextObject("{=MF_ValorPositiveTryLater}Return when your words blaze boldly.");

    // Valor Negative Task
    public static TextObject ValorNegativeSpoken => new TextObject("{=MF_ValorNegativeSpoken}Recite a poem of caution and strategy.");
    public static TextObject ValorNegativeImmediateFail => new TextObject("{=MF_ValorNegativeImmediateFail}Your poem is reckless, lacking foresight.");
    public static TextObject ValorNegativeFail => new TextObject("{=MF_ValorNegativeFail}This poem fails to express prudent wisdom.");
    public static TextObject ValorNegativeTryLater => new TextObject("{=MF_ValorNegativeTryLater}Return when your verses are more calculated.");

    // Honor Positive Task
    public static TextObject HonorPositiveSpoken => new TextObject("{=MF_HonorPositiveSpoken}Recite a poem of duty and honor.");
    public static TextObject HonorPositiveImmediateFail => new TextObject("{=MF_HonorPositiveImmediateFail}Your poem dishonors the ideals of duty.");
    public static TextObject HonorPositiveFail => new TextObject("{=MF_HonorPositiveFail}This poem fails to uphold the weight of honor.");
    public static TextObject HonorPositiveTryLater => new TextObject("{=MF_HonorPositiveTryLater}Return when your words reflect true honor.");

    // Honor Negative Task
    public static TextObject HonorNegativeSpoken => new TextObject("{=MF_HonorNegativeSpoken}Recite a poem of adaptability and cunning.");
    public static TextObject HonorNegativeImmediateFail => new TextObject("{=MF_HonorNegativeImmediateFail}Your poem is rigid, lacking wit.");
    public static TextObject HonorNegativeFail => new TextObject("{=MF_HonorNegativeFail}This poem fails to show clever adaptability.");
    public static TextObject HonorNegativeTryLater => new TextObject("{=MF_HonorNegativeTryLater}Return when your verses are more cunning.");

    // Generosity Positive Task
    public static TextObject GenerosityPositiveSpoken => new TextObject("{=MF_GenerosityPositiveSpoken}Recite a poem of generosity and sharing.");
    public static TextObject GenerosityPositiveImmediateFail => new TextObject("{=MF_GenerosityPositiveImmediateFail}Your poem reeks of greed, not generosity.");
    public static TextObject GenerosityPositiveFail => new TextObject("{=MF_GenerosityPositiveFail}This poem fails to convey a generous heart.");
    public static TextObject GenerosityPositiveTryLater => new TextObject("{=MF_GenerosityPositiveTryLater}Return when your words are more bountiful.");

    // Generosity Negative Task
    public static TextObject GenerosityNegativeSpoken => new TextObject("{=MF_GenerosityNegativeSpoken}Recite a poem of thrift and restraint.");
    public static TextObject GenerosityNegativeImmediateFail => new TextObject("{=MF_GenerosityNegativeImmediateFail}Your poem is wasteful, lacking restraint.");
    public static TextObject GenerosityNegativeFail => new TextObject("{=MF_GenerosityNegativeFail}This poem fails to express prudent thrift.");
    public static TextObject GenerosityNegativeTryLater => new TextObject("{=MF_GenerosityNegativeTryLater}Return when your verses are more frugal.");

    // Calculating Positive Task
    public static TextObject CalculatingPositiveSpoken => new TextObject("{=MF_CalculatingPositiveSpoken}Recite a poem of intellect and planning.");
    public static TextObject CalculatingPositiveImmediateFail => new TextObject("{=MF_CalculatingPositiveImmediateFail}Your poem is foolish, lacking intellect.");
    public static TextObject CalculatingPositiveFail => new TextObject("{=MF_CalculatingPositiveFail}This poem fails to show strategic wisdom.");
    public static TextObject CalculatingPositiveTryLater => new TextObject("{=MF_CalculatingPositiveTryLater}Return when your words are more calculated.");

    public static TextObject CalculatingNegativeSpoken => new TextObject("{=MF_CalculatingNegativeSpoken}Recite a poem of honesty and candor.");
    public static TextObject CalculatingNegativeImmediateFail => new TextObject("{=MF_CalculatingNegativeImmediateFail}Your poem is deceitful, lacking honesty.");
    public static TextObject CalculatingNegativeFail => new TextObject("{=MF_CalculatingNegativeFail}This poem fails to express true candor.");
    public static TextObject CalculatingNegativeTryLater => new TextObject("{=MF_CalculatingNegativeTryLater}Return when your verses are more sincere.");

    // Default Task
    public static TextObject DefaultSpoken => new TextObject("{=MF_DefaultSpoken}Please recite a poem to stir my heart.");
    public static TextObject DefaultImmediateFail => new TextObject("{=MF_DefaultImmediateFail}Your poem fails to move me.");
    public static TextObject DefaultFail => new TextObject("{=MF_DefaultFail}This poem lacks resonance, alas.");
    public static TextObject DefaultTryLater => new TextObject("{=MF_DefaultTryLater}Return when your poetry is more refined.");

    // Success and Failure Messages
    public static TextObject PoetrySuccessMessage => new TextObject("{=MF_PoetrySuccessMessage}{HERO} was deeply moved by your poetry, strengthening your bond.");
    public static TextObject PoetryFailMessage => new TextObject("{=MF_PoetryFailMessage}{HERO} was not swayed by your poetry, leaving your bond unchanged.");
    public static TextObject PoetryAttemptSuccess => new TextObject("{=MF_PoetryAttemptSuccess}{HERO} was touched by your poem, increasing your relation by {RELATION} points.");
    public static TextObject PoetryAttemptFail => new TextObject("{=MF_PoetryAttemptFail}{HERO} was unimpressed by your poem, decreasing your relation by {RELATION} points.");

    // Debug Messages
    public static TextObject NoPoetryTasks => new TextObject("{=MF_NoPoetryTasks}No poetry tasks available for {HERO}.");

    public static readonly List<PoemDetails> PoemsWithDetails = new()
    {
        // Frequency Positive
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem1}My sword's gleam lights the heavens nine, Your face reflected in moon's design"),
            Response = new TextObject("{=MF_PoemResponse1}My heart joins yours, as swords align"),
            Theme = PoetryDialog.PoetryTheme.FrequencyPositive
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem2}Through dust of war, my heart holds true, My banner follows only you"),
            Response = new TextObject("{=MF_PoemResponse2}I'll be the dust beneath your steed, Forever bound by loyal deed"),
            Theme = PoetryDialog.PoetryTheme.FrequencyPositive
        },
        // Frequency Negative
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem3}Clouds part, thunder breaks the sky, My sail rides free where waves comply"),
            Response = new TextObject("{=MF_PoemResponse3}I roam with waves, my spirit free, The world my home, my heart the sea"),
            Theme = PoetryDialog.PoetryTheme.FrequencyNegative
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem4}Sky boundless, birds soar without care, I laugh at life, my soul laid bare"),
            Response = new TextObject("{=MF_PoemResponse4}I laugh with you, no chains to bind, The world is ours, no ties confined"),
            Theme = PoetryDialog.PoetryTheme.FrequencyNegative
        },
        // Mercy Positive
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem5}In war's grim smoke, your eyes still shine, A beacon clear, a hope divine"),
            Response = new TextObject("{=MF_PoemResponse5}Your words reflect my heart's own light, Together we shall share the night"),
            Theme = PoetryDialog.PoetryTheme.MercyPositive
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem6}Frost pities leaves that fall in vain, My heart sends love through autumn's pain"),
            Response = new TextObject("{=MF_PoemResponse6}Your pity warms the autumn air, A kindness shared beyond compare"),
            Theme = PoetryDialog.PoetryTheme.MercyPositive
        },
        // Mercy Negative
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem7}Cold iron forges heart unyielding, Through frost and storm, my will unshielding"),
            Response = new TextObject("{=MF_PoemResponse7}Your iron heart defies the gale, Unbroken will shall ever prevail"),
            Theme = PoetryDialog.PoetryTheme.MercyNegative
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem8}Lone pine on cliff, I stand apart, The world below can't sway my heart"),
            Response = new TextObject("{=MF_PoemResponse8}Like pine, you stand through storm and strife, Unmoved by fleeting tides of life"),
            Theme = PoetryDialog.PoetryTheme.MercyNegative
        },
        // Valor Positive
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem9}Hooves thunder, banners tear the frost, My heart finds home where you are lost"),
            Response = new TextObject("{=MF_PoemResponse9}I'll guard your home through storm and fray, No wind shall steal our love away"),
            Theme = PoetryDialog.PoetryTheme.ValorPositive
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem10}My lance breaks dawn with fiery might, My dreams ascend to heaven's height"),
            Response = new TextObject("{=MF_PoemResponse10}Your fire shakes the earth and sky, Our spirits soar, together fly"),
            Theme = PoetryDialog.PoetryTheme.ValorPositive
        },
        // Valor Negative
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem11}Plan first, then strike when stars align, Victory waits for patient mind"),
            Response = new TextObject("{=MF_PoemResponse11}Your mind commands the tides of fate, We win through plans deliberate"),
            Theme = PoetryDialog.PoetryTheme.ValorNegative
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem12}Night's council shapes the dawn's success, I smile at war with cunning's finesse"),
            Response = new TextObject("{=MF_PoemResponse12}Your cunning carves the path to might, We triumph in the morning light"),
            Theme = PoetryDialog.PoetryTheme.ValorNegative
        },
        // Honor Positive
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem13}Steel holds firm, yet heart does sway, In honor's depths, my love's at play"),
            Response = new TextObject("{=MF_PoemResponse13}Your honor binds our hearts as one, A love to last till stars are done"),
            Theme = PoetryDialog.PoetryTheme.HonorPositive
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem14}My oath outweighs a thousand spears, In duty's name, I dry your tears"),
            Response = new TextObject("{=MF_PoemResponse14}Your duty lights the heavens wide, Our love in honor shall abide"),
            Theme = PoetryDialog.PoetryTheme.HonorPositive
        },
        // Honor Negative
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem15}Life's a game, I shift the board, With wit I claim my just reward"),
            Response = new TextObject("{=MF_PoemResponse15}Your wit outshines the rigid vow, We dance through life, no fetters now"),
            Theme = PoetryDialog.PoetryTheme.HonorNegative
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem16}Three lairs for fox, I slip the snare, With cunning mind, I roam with flair"),
            Response = new TextObject("{=MF_PoemResponse16}Your cunning frees us from the chain, We rule the world, no loss, all gain"),
            Theme = PoetryDialog.PoetryTheme.HonorNegative
        },
        // Generosity Positive
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem17}Gold flows free, my cup I share, A generous heart knows no despair"),
            Response = new TextObject("{=MF_PoemResponse17}Your open heart warms all who see, We drink as one, in unity"),
            Theme = PoetryDialog.PoetryTheme.GenerosityPositive
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem18}I give my wealth to ease the poor, My heart's the key to heaven's door"),
            Response = new TextObject("{=MF_PoemResponse18}Your gifts outshine all worldly gain, Our love shall heal the world's deep pain"),
            Theme = PoetryDialog.PoetryTheme.GenerosityPositive
        },
        // Generosity Negative
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem19}My purse holds tight, yet dreams abide, In thrift I build a life with pride"),
            Response = new TextObject("{=MF_PoemResponse19}Your thrift secures a steady flame, Our love endures, unswayed by shame"),
            Theme = PoetryDialog.PoetryTheme.GenerosityNegative
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem20}Each coin I save, a future won, My careful heart outlasts the sun"),
            Response = new TextObject("{=MF_PoemResponse20}Your care builds strength that time can't break, Our love shall thrive for prudence's sake"),
            Theme = PoetryDialog.PoetryTheme.GenerosityNegative
        },
        // Calculating Positive
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem21}In council deep, I shape the land, With intellect, I hold command"),
            Response = new TextObject("{=MF_PoemResponse21}Your mind secures the world we know, Together we shall make it grow"),
            Theme = PoetryDialog.PoetryTheme.CalculatingPositive
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem22}Stars I read to chart my way, With wisdom's hand, I seize the day"),
            Response = new TextObject("{=MF_PoemResponse22}Your wisdom guides us through the night, Our path is clear in reason's light"),
            Theme = PoetryDialog.PoetryTheme.CalculatingPositive
        },
        // Calculating Negative
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem23}No sleep in tents, I seek your hand, Our graying hair, one heart, one land"),
            Response = new TextObject("{=MF_PoemResponse23}Our hearts align through time and strife, One land, one love, one shared life"),
            Theme = PoetryDialog.PoetryTheme.CalculatingNegative
        },
        new PoemDetails
        {
            Line = new TextObject("{=MF_Poem24}Truth cuts through the silent sky, Honest heart needs no disguise"),
            Response = new TextObject("{=MF_PoemResponse24}Your truth outshines all cunning's art, It binds forever heart to heart"),
            Theme = PoetryDialog.PoetryTheme.CalculatingNegative
        }
    };
}

public class PoemDetails
{
    public TextObject Line { get; set; }
    public TextObject Response { get; set; }
    public PoetryDialog.PoetryTheme Theme { get; set; }
}